package genericdemo;

//<T>表示这个类型的泛型类
class MyArray<T> {
    //public T[] = new T[3];error
    public T[] obj = (T[])new Object[3];//强转

    //正确写法
    //常用的写法
    /*public Object[] obj = new Object[3];

    public E getPos2(int pos) {
        return (E)obj[pos];
    }*/
    public T getPos(int pos) {
        return obj[pos];
    }

    public void setObj(int pos,T val) {
        obj[pos] = val;
    }
}
public class Test {
    public static void main(String[] args) {
        //实例化对象的同时，指定当前泛型类 的指定参数类型时Integer
        // < >里面指定的类型必须是引用类型
        MyArray<Integer> myArray = new MyArray<>();
        //就可以存储 指定的数据类型
        myArray.setObj(0,10);
        myArray.setObj(1,20);
        myArray.setObj(2,30);

        Integer d = myArray.getPos(2);

        System.out.println("===============");

        MyArray<String> myArray2 = new MyArray<>();
        myArray2.setObj(0,"asd");
        myArray2.setObj(1,"zxc");
        myArray2.setObj(2,"qwe");

        String str = myArray2.getPos(0);

    }
}
